cmake_minimum_required(VERSION 3.15)
set(PROJECT_NAME "flutter_blue_plus_win")
project(${PROJECT_NAME} LANGUAGES CXX)

set(PLUGIN_NAME "${PROJECT_NAME}_plugin")

find_program(NUGET_EXE NAMES nuget)
if(NOT NUGET_EXE)
	message("NUGET.EXE not found.")
	message(FATAL_ERROR "Please install this executable, and run CMake again.")
endif()

execute_process(
		COMMAND "${NUGET_EXE}"
		install "Microsoft.Windows.CppWinRT"
		-Version 2.0.240405.15
		-ExcludeVersion
		-OutputDirectory ${CMAKE_BINARY_DIR}/packages
		RESULT_VARIABLE result
		OUTPUT_VARIABLE output
		ERROR_VARIABLE error
)
add_library(${PLUGIN_NAME} SHARED
		"${PLUGIN_NAME}.cpp"
		"flutter_blue_device_agent.cpp"
		"flutter_blue_event_handler.cpp"
		"flutter_blue_help.cpp"
)
apply_standard_settings(${PLUGIN_NAME})
set_target_properties(${PLUGIN_NAME} PROPERTIES
		CXX_VISIBILITY_PRESET hidden)

set_target_properties(${PLUGIN_NAME} PROPERTIES
		VS_PROJECT_IMPORT ${CMAKE_BINARY_DIR}/packages/Microsoft.Windows.CppWinRT/build/native/Microsoft.Windows.CppWinRT.props
)

target_link_libraries(${PLUGIN_NAME} PRIVATE ${CMAKE_BINARY_DIR}/packages/Microsoft.Windows.CppWinRT/build/native/Microsoft.Windows.CppWinRT.targets)

target_compile_definitions(${PLUGIN_NAME} PRIVATE FLUTTER_PLUGIN_IMPL)
target_include_directories(${PLUGIN_NAME} INTERFACE
		"${CMAKE_CURRENT_SOURCE_DIR}/include")
target_link_libraries(${PLUGIN_NAME} PRIVATE flutter flutter_wrapper_plugin)

# List of absolute paths to libraries that should be bundled with the plugin
set(flutter_blue_plus_win_bundled_libraries
		""
		PARENT_SCOPE
)
